iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0
Software Development

C# 學習之路系列 第 23

[DAY22] C#基礎與實作(常見演算法-貪心.迭代)

  • 分享至 

  • xImage
  •  

C# 程式基礎

常見演算法:

  • 貪心(Greedy)
  • 迭代(Iteration)

貪心(Greedy):

  • 基本概念:
    • 基本思想是將每一步都選擇當前情況下最好的選擇,以期望達到整體的最優解。
  • 步驟:
    1. 選擇問題的最優解性質:
      首先,需要確定問題是否具有最優子結構性質,即問題的最優解可以通過子問題的最優解組合而成。
    2. 定義選擇策略:
      根據問題的性質,定義一個選擇策略,即在每一步中如何選擇最好的選擇。
    3. 迭代選擇:
      從問題的初始狀態開始,按照選擇策略進行迭代選擇,直到達到終止條件。
  • 程式實作(找零錢問題:有1、5、15硬幣面值,找到15元,最少硬幣數量):
    public static List<int> FindChange(int amount)
    {
        List<int> coins = new List<int> { 10, 5, 1 }; // 可用的硬幣面值
        List<int> change = new List<int>();
        int remaining = amount;
    
        foreach (int coin in coins)
        {
            while (remaining >= coin)
            {
                change.Add(coin);
                remaining -= coin;
            }
        }
    
        return change;
    }
    
    static void Main(string[] args)
    {
        int amount = 15;
        List<int> change = FindChange(amount);
    
        Console.WriteLine("找零錢的硬幣:");
        foreach (int coin in change)
        {
            Console.Write(coin + " ");
        }
    }
    
    
    

迭代(Iteration):

  • 基本概念:

    • 基本思想是使用循環結構重複執行,其目的是為了接近並且到達所需的目標或結果。
    • 每一次對過程的重複被稱為一次「迭代」,而每一次迭代得到的結果會被用來作為下一次迭代的初始值。
    • 不斷利用目前求得的數值,再求得新數值。
  • 程式實作(10的n次方):

    double CalculatePower(double baseNumber, int exponent)
    {
        double result = 1.0;
    
        for (int i = 0; i < exponent; i++)
        {
            result *= baseNumber;
        }
    
        return result;
    }
    
    public static void Main()
    {
        double baseNumber = 10.0;
        int exponent = 5; // 將10的5次方
    
        double result = CalculatePower(baseNumber, exponent);
    
        Console.WriteLine($"10的{exponent}次方為: {result}");
    }
    

程式實作練習:

參考來源

  1. ChatGPT
  2. C#最強入門邁向頂尖高手之路王者歸來
  3. w3schools C#
  4. 圖解資料結構 × 演算法:運用C#
  5. leetcode
  6. algo

期望挑戰30天持續更新成功 ~ DAY22


上一篇
[DAY21] C#基礎與實作(常見演算法-分治.遞迴)
下一篇
[DAY23] C#基礎與實作(常見演算法-動態規劃)
系列文
C# 學習之路31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言